package Demo08;
/*线程解决安全问题的第二种方法：使用同步法
格式： 修饰符 synchronized 返回值类型 方法名（参数列表）{
      可能会出现线程安全问题的代码（访问了共享数据的代码）
}

 */
public class RunnableImpl implements Runnable{
    private int ticket = 100;
    @Override
    public void run() {
        System.out.println("this:" + this);
        while(ticket >= 0){
            payTicket();

        }

    }
    //定义一个同步方法
    public synchronized  void payTicket(){
        if(ticket > 0){
            //提高安全问题出现的概率，让程序睡眠
            try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println(Thread.currentThread().getName() + "正在卖第" + ticket + "张票");
            ticket--;
        }
    }





}
